-- https://github.com/nvim-treesitter/nvim-treesitter
-- https://github.com/p00f/nvim-ts-rainbow

-- 依赖
-- AC 编译器并安装 libstdc++
-- ubuntu： sudo apt install build-essential -- 会安装一系列工具，包括 gcc
-- - 还需要：tar 和 curl 或 git，如果有就不用装了

--  使用镜像地址来安装
for _, config in pairs(require("nvim-treesitter.parsers").get_parser_configs()) do
  -- config.install_info.url = config.install_info.url:gsub("https://github.com/", "something else")
  config.install_info.url = config.install_info.url:gsub("https://hub.fastgit.xyz/", "something else")
  -- config.install_info.url = config.install_info.url:gsub("https://ghproxy.com/https://github.com/", "something else")
end

-- -- 使用 git 来安装
-- require("nvim-treesitter.install").prefer_git = true
-- -- 使用代理
-- require("nvim-treesitter.install").command_extra_args = {
--     curl = { "--proxy", "https://ghproxy.com/" },
-- }

require("nvim-treesitter.configs").setup(
    {
        -- 安装的高亮支持来源
        -- ensure_installed = "maintained",
        --解析器名称列表，或 "all" 
        ensure_installed = { 
            "comment",
            "bash",
            "python",
            "php",
            -- "phpdoc",
            -- "go",
            "http",
            "html",
            "css",
            "javascript",
            "vue",

            "json",
            "java",
            -- "JSON with comments",
            -- "c", 
            "lua",
            -- "rust",
            -- "ruby",
            -- "todotxt",
            "vim",
            
        },
        --忽略安装的解析器列表（对于“所有”） 
        -- ignore_install = { 
        --     " javascript " 
        -- },
        -- 同步下载高亮支持 仅适用于 `ensure_installed`） 
        sync_install = false,
        -- 高亮相关
        highlight = {
            -- 启用高亮支持
            enable = true,
            -- 使用 treesitter 高亮而不是 neovim 内置的高亮
            additional_vim_regex_highlighting = false,

            --注意：这些是解析器的名称，而不是文件类型。（例如，如果你想
            --禁用 `tex` 文件类型的突出显示，你需要在这个列表中包含 `latex` 因为这是
            --解析器的名称）
            --将被禁用的语言列表
            -- disable = { 
            --     "c", 
            --     "rust" 
            -- },
        },
        -- 范围选择
        incremental_selection = {
            enable = true,
            keymaps = {
                -- 初始化选择
                init_selection = "<CR>",
                -- 递增
                node_incremental = "<CR>",
                -- 递减
                node_decremental = "<BS>",
                -- 选择一个范围
                scope_incremental = "<TAB>"
            }
        },
        -- 缩进，关闭
        indent = {
            enable = false
        },
        -- 彩虹括号，由 nvim-ts-rainbow 插件提供
        rainbow = {
            enable = true,
            extended_mode = true
            -- colors = {}, -- table of hex strings
            -- termcolors = {} -- table of colour name strings
        },
        -- 根据当前上下文定义文件类型，由 nvim-ts-context-commentstring 插件提供
        context_commentstring = {
            enable = true
        }
    }
)

-- 注意：此插件仅保证与特定版本的语言解析器一起使用
-- 使用
-- :TSUpdate
-- :TSInstall <language_to_install>
